iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
AI Engineering

30 天打造 ResearchForge:從 AI 報告生成器到可追溯的研究工程系統系列 第 6

# Day 06|搜尋題目不是一個字串:Query Expansion 如何不搜歪

  • 分享至 

  • xImage
  •  

做 ResearchForge 到現在,我越來越確定一件事:

研究報告最早出錯的地方,往往不是 AI 開始寫文章的時候,而是搜尋的第一秒。

假設今天我輸入一個題目:

塑膠微粒對海洋生物的影響

最直覺的做法,大概就是把這句話丟進搜尋引擎,再把前幾篇結果交給 AI。

乍看之下很合理。

但如果 ResearchForge 真的這樣做,那它最後產生的報告再漂亮,我可能都不敢相信。

因為一個「研究題目」,其實從來都不是一個搜尋字串。


一個題目背後,其實藏著很多不同問題

「塑膠微粒對海洋生物的影響」看起來只有一句話,但拆開之後,可能至少包含:

  • microplastics / nanoplastics
  • marine organisms
  • ingestion
  • oxidative stress
  • reproductive effects
  • growth
  • mortality
  • bioaccumulation
  • trophic transfer
  • fish
  • bivalves
  • zooplankton

甚至「影響」本身就很模糊。

到底是在問:

生理影響?

繁殖能力?

死亡率?

行為改變?

食物鏈累積?

還是整個生態系的長期效應?

如果搜尋系統只拿原始題目搜尋一次,那它拿到的不是「這個研究問題的文獻」,而比較像是:

剛好和這句話長得最像的搜尋結果。

這兩件事情差很多。


所以我開始把 Query 當成研究流程的一部分

ResearchForge 裡我現在想建立的,不再是:

Topic

Search

Papers

而是:

Topic

Research Intent

Concept Expansion

Sub-questions

Search Queries

Multiple Academic Sources

Deduplication

Evidence

也就是說,使用者輸入的題目只是起點。

系統必須先理解:

「這個題目真正想知道的是什麼?」

接著才能決定:

「我要用哪些字去找答案?」

這就是我最近一直在處理的 Query Expansion


但 Query Expansion 有一個很危險的問題:搜歪

Query Expansion 聽起來很簡單。

例如原本搜尋:

microplastics marine organisms

擴展成:

microplastic toxicity marine organisms
microplastic ingestion fish
microplastic oxidative stress bivalves
microplastic reproductive effects marine species
microplastic trophic transfer ocean ecosystem

搜尋量立刻變多。

但「找到更多東西」不代表「研究變好了」。

因為擴展得太自由,很容易發生 semantic drift

例如原本研究:

塑膠微粒對海洋生物的影響

模型一路擴展後,可能開始找到:

  • 人體攝入微塑膠
  • 飲用水污染
  • 塑膠回收政策
  • 海灘垃圾管理
  • 廢棄物處理
  • 塑膠替代材料

這些東西都和「塑膠微粒」有關。

但它們已經不是原本的研究問題。

這也是我覺得 AI 搜尋最危險的地方之一:

它很容易找到「相關的東西」,卻不一定找到「能回答問題的東西」。


所以擴展不能只有「增加」,還需要「邊界」

我現在比較喜歡把 Query Expansion 想成:

在一個有邊界的研究空間裡增加搜尋路徑。

例如原始題目:

塑膠微粒對海洋生物的影響

可以先建立幾個 anchor:

核心實體:
microplastics
marine organisms

再建立研究面向:

physiological effects
reproduction
growth
mortality
oxidative stress
bioaccumulation
trophic transfer

接著建立研究對象:

fish
bivalves
crustaceans
zooplankton
marine invertebrates

最後才排列組合成搜尋 query。

但是同時也要存在 exclusion:

human health
drinking water
waste management
plastic recycling

這樣 Query Expansion 才不是:

AI,請幫我想到更多關鍵字。

而比較像:

在不離開研究問題的前提下,系統性探索這個問題可能存在的證據空間。

這兩種設計得到的結果會差非常多。


中文題目還有另一層問題:研究語言不一定是搜尋語言

這也是 ResearchForge 必須處理的事情。

我平常輸入的題目幾乎都是中文。

可是很多學術資料庫裡,主要論文仍然是英文。

所以:

塑膠微粒對海洋生物的影響

不能只是翻譯成:

Effects of microplastics on marine organisms

然後結束。

真正有用的做法應該是:

中文研究問題

概念辨識

英文學術術語

同義詞/相關術語

子問題

多組 query

而且我不希望系統把原本中文問題丟掉。

因為「原始問題」應該永遠被保存。

後面產生的英文關鍵字、延伸詞與搜尋式,都只是衍生資料。

這其實和 ResearchForge 很重要的一個原則是一樣的:

原始資料不能被 AI 的加工結果取代。


還有一個問題:不同搜尋來源看到的世界不一樣

即使 Query 完全一樣,不同學術來源得到的結果也可能不同。

例如 ResearchForge 的資料來源設計中,我一直在考慮:

  • Crossref
  • OpenAlex
  • Semantic Scholar
  • ACL Anthology
  • DOAJ
  • CORE
  • Unpaywall

甚至針對語言學與 NLP,還會有更專門的來源。

原因很簡單。

如果我只搜尋一個資料庫,我最後得到的「研究現況」,很可能其實只是:

這個資料庫看得到的研究現況。

而不是:

真正完整的研究現況。


找到論文之後,也還不能直接寫報告

這又是另一個我以前低估的問題。

假設系統找到 100 篇文獻。

不代表這 100 篇都應該進報告。

還要繼續處理:

搜尋結果

Metadata normalization

DOI / title 去重

來源品質

研究相關度

全文可取得性

Evidence extraction

Evidence Card

Accepted Evidence

ResearchForge 的資料設計裡,我一直希望保留:

query_used
provider
title
authors
year
doi
abstract
relevance_score
source_quality_score
accepted_by_user

因為這樣未來當某一段報告出現問題時,我才能往回追。

不是只追到:

這句話來自哪一篇論文?

而是可以繼續追:

為什麼當初會找到這篇論文?

這對我來說才真正算「可追溯」。


Query 本身也應該成為 Evidence Chain 的一部分

以前我想像中的證據鏈大概是:

Paper

Evidence

Claim

Paragraph

現在我覺得它其實應該更長:

Research Question

Expanded Query

Search Provider

Search Result

Source

Evidence Card

Claim

Paragraph

Report

這個改變對我來說很重要。

因為如果只有最後的 citation 是可追溯的,我其實只驗證了:

AI 有沒有替這句話放來源。

但我沒有驗證:

為什麼系統從一開始就選到了這些來源?

而一份研究報告真正的偏差,很可能早在 citation 出現以前就已經形成。


我也開始理解:搜尋不是 Retrieval 前處理,而是研究方法

這是今天做 ResearchForge 最大的收穫。

我以前會把搜尋想成一個工具:

需要資料
→ 搜尋
→ 得到資料

現在我比較把它理解成:

搜尋策略本身,就是研究方法的一部分。

你用了哪些詞?

排除了哪些詞?

搜尋哪些資料庫?

搜尋到哪一年?

有沒有追 citation?

有沒有納入不同語言?

什麼結果被接受?

什麼結果被排除?

這些選擇全部都會改變最後的結論。

所以一個真正想做「可驗證研究報告」的系統,不能只保存最後寫出的文章。

它還必須保存:

文章是怎麼被找出來的。


ResearchForge 越做,越不像單純的「AI 寫作工具」

這幾天我一直碰到同一個問題。

如果目標只是:

輸入一個題目,生成一篇看起來完整的報告。

其實現在的大型語言模型早就做得到。

甚至幾分鐘就能做完。

但 ResearchForge 真正想處理的是另一個問題:

我能不能知道這份報告為什麼值得相信?

而 Query Expansion 就是這條路上非常前面、卻非常容易被忽略的一環。

因為如果搜尋一開始就歪了:

後面的摘要可以很漂亮。

Evidence Card 可以很完整。

引用格式可以完全正確。

PDF 也可以排得很好看。

但它們只是在非常精確地整理一批 原本就找錯的資料

所以今天我給自己的結論是:

搜尋不是「找到越多越好」,而是要知道自己為什麼找、找了什麼,以及為什麼沒有搜歪。

而如果 ResearchForge 最後真的能做到這件事,我希望它提供的不只是一篇報告。

而是一條從:

「我想研究什麼」

一路走到:

「我為什麼相信這個結論」

都能重新走一次的路。


Day 06 完

今天處理的是 Query Expansion 與研究搜尋邊界

下一步則會繼續往搜尋結果後面走:

找到一篇論文,不代表它就有資格成為證據。

也就是 ResearchForge 裡我非常重視的下一層:

Evidence Card、來源品質,以及「什麼資料有資格進入報告」。

標籤:
ResearchForge、生成式AI、RAG、Query Expansion、學術搜尋、資訊檢索、AI工程、iThome鐵人賽


上一篇
# Day 05|資料先過關:Accepted Source 如何建立單向流水線
系列文
30 天打造 ResearchForge:從 AI 報告生成器到可追溯的研究工程系統6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言